class Solution {
public:
  // 在匹配左括号的时候，右括号先入栈，就只需要比较当前元素和栈顶相不相等就可以了
    bool isValid(string s) {
        stack<int> brackets;
        for(int i = 0; i < s.size(); ++i){
            // 如果是左括号将对应右括号入栈
            if(s[i] == '(')   brackets.push(')');
            else if(s[i] == '{')   brackets.push('}');
            else if(s[i] == '[')   brackets.push(']');
            // 栈空或括号不匹配
            else if(brackets.empty() || brackets.top() != s[i]) return false;
            // （右括号）与栈顶括号相等左右匹配
            else brackets.pop();  // 出栈 继续
        }
        return brackets.empty();  // 栈空说明匹配成功
    }
};